package com.hui.qiniucloud.service;

import com.hui.qiniucloud.dto.*;
import com.hui.qiniucloud.entity.ChatSession;

import java.util.List;

/**
 * 聊天服务接口
 */
public interface IChatService {

    /**
     * 发送聊天消息
     * @param userId 用户ID
     * @param request 聊天请求
     * @return 聊天响应
     */
    ChatMessageResponse sendMessage(Long userId, ChatMessageRequest request);

    /**
     * 获取用户的聊天会话列表
     * @param userId 用户ID
     * @return 会话列表
     */
    List<ChatSessionResponse> getUserSessions(Long userId);

    /**
     * 根据角色ID获取用户的聊天会话列表
     * @param userId 用户ID
     * @param characterId 角色ID
     * @return 会话列表
     */
    List<ChatSessionResponse> getUserSessionsByCharacter(Long userId, String characterId);

    /**
     * 获取聊天历史记录
     * @param userId 用户ID
     * @param sessionId 会话ID
     * @return 聊天历史
     */
    ChatHistoryResponse getChatHistory(Long userId, Long sessionId);

    /**
     * 删除聊天会话
     * @param userId 用户ID
     * @param sessionId 会话ID
     */
    void deleteSession(Long userId, Long sessionId);

    /**
     * 更新会话标题
     * @param userId 用户ID
     * @param sessionId 会话ID
     * @param title 新标题
     */
    void updateSessionTitle(Long userId, Long sessionId, String title);

    /**
     * 搜索聊天会话
     * @param userId 用户ID
     * @param keyword 搜索关键词
     * @return 会话列表
     */
    List<ChatSessionResponse> searchSessions(Long userId, String keyword);

    /**
     * 清空用户所有聊天记录
     * @param userId 用户ID
     */
    void clearAllSessions(Long userId);
}